package com.ruoyi.pingan.fymodule.goodsinfo.goodscategory.service;

import cn.hutool.json.JSONObject;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;

import com.ruoyi.pingan.fymodule.goodsinfo.goodscategory.entity.SxoGoodsCategory;
import com.ruoyi.pingan.fymodule.goodsinfo.goodscategory.param.SxoGoodsCategoryAddParam;
import com.ruoyi.pingan.fymodule.goodsinfo.goodscategory.param.SxoGoodsCategoryEditParam;
import com.ruoyi.pingan.fymodule.goodsinfo.goodscategory.param.SxoGoodsCategoryIdParam;
import com.ruoyi.pingan.fymodule.goodsinfo.goodscategory.param.SxoGoodsCategoryPageParam;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.List;

/**
 * 商品分类Service接口
 *
 * @author wangy
 * @date  2025/07/25 16:46
 **/
public interface SxoGoodsCategoryService extends IService<SxoGoodsCategory> {

    /**
     * 获取商品分类分页
     *
     * @author wangy
     * @date  2025/07/25 16:46
     */
    Page<SxoGoodsCategory> page(SxoGoodsCategoryPageParam sxoGoodsCategoryPageParam);

    /**
     * 添加商品分类
     *
     * @author wangy
     * @date  2025/07/25 16:46
     */
    void add(SxoGoodsCategoryAddParam sxoGoodsCategoryAddParam);

    /**
     * 编辑商品分类
     *
     * @author wangy
     * @date  2025/07/25 16:46
     */
    void edit(SxoGoodsCategoryEditParam sxoGoodsCategoryEditParam);

    /**
     * 删除商品分类
     *
     * @author wangy
     * @date  2025/07/25 16:46
     */
    void delete(List<SxoGoodsCategoryIdParam> sxoGoodsCategoryIdParamList);

    /**
     * 获取商品分类详情
     *
     * @author wangy
     * @date  2025/07/25 16:46
     */
    SxoGoodsCategory detail(SxoGoodsCategoryIdParam sxoGoodsCategoryIdParam);

    /**
     * 获取商品分类详情
     *
     * @author wangy
     * @date  2025/07/25 16:46
     **/
    SxoGoodsCategory queryEntity(String id);

    /**
     * 下载商品分类导入模板
     *
     * @author wangy
     * @date  2025/07/25 16:46
     */
    void downloadImportTemplate(HttpServletResponse response) throws IOException;

    /**
     * 导入商品分类
     *
     * @author wangy
     * @date  2025/07/25 16:46
     **/
    JSONObject importData(MultipartFile file);

    /**
     * 导出商品分类
     *
     * @author wangy
     * @date  2025/07/25 16:46
     */
    void exportData(List<SxoGoodsCategoryIdParam> sxoGoodsCategoryIdParamList, HttpServletResponse response) throws IOException;
}
